package cn.stylefeng.guns.modular.basic.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;

import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.modular.basic.entity.BasicOperate;
import cn.stylefeng.guns.modular.basic.model.params.BasicOperateParam;
import cn.stylefeng.guns.modular.basic.model.result.BasicOperateResult;

/**
 * 运营部表（原系统：分公司表） 服务类
 */
public interface BasicOperateService extends IService<BasicOperate> {

    /**
     * 新增
     */
    void add(BasicOperateParam param);

    /**
     * 删除
     */
    void delete(BasicOperateParam param);

    /**
     * 更新
     */
    void update(BasicOperateParam param);

    /**
     * 查询单条数据，Specification模式
     */
    BasicOperateResult findBySpec(BasicOperateParam param,Long operateId);

    /**
     * 查询列表，Specification模式
     */
    List<BasicOperateResult> findListBySpec(BasicOperateParam param,Long operateId);

    /**
     * 查询分页数据，Specification模式
     */
     LayuiPageInfo findPageBySpec(BasicOperateParam param,String condition,Long operateId);

	List<BasicOperate> findListByDeptId(Long deptId);

	/**
	 * 查询可选择分公司
	 * @param deptId
	 * @param deliverId
	 * @return
	 */
	List<BasicOperateResult> findAvailableList(Long deptId, Long deliverId,Long operateId);

	List<BasicOperateResult> dayTotalOrderCount(BasicOperateParam basicOperateParam);

	List<BasicOperateResult> dayTotalOrderVolume(BasicOperateParam basicOperateParam);

	List<BasicOperateResult> dayTotalOrderFayunCount(BasicOperateParam basicOperateParam);

	List<BasicOperateResult> dayTotalFayunFenxi(BasicOperateParam basicOperateParam);

	List<BasicOperateResult> dayTotalWeisongdaFenxi(BasicOperateParam basicOperateParam);

	List<BasicOperateResult> dayTotalWeiqianshouFenxi(BasicOperateParam basicOperateParam);

	List<BasicOperateResult> monthTotalOrderCount(BasicOperateParam basicOperateParam);

	List<BasicOperateResult> monthTotalOrderVolume(BasicOperateParam basicOperateParam);

	List<BasicOperateResult> monthTotalHuanjieFenxi(BasicOperateParam basicOperateParam);

	List<BasicOperateResult> monthTotalFayunOrderCount(BasicOperateParam basicOperateParam);

	BasicOperateResult monthTotalFayunOrderCountById(BasicOperateParam basicOperateParam);

	List<BasicOperateResult> monthTotalSongdaOrderCount(BasicOperateParam basicOperateParam);

	BasicOperateResult monthTotalSongdaOrderCountById(BasicOperateParam basicOperateParam2);

	List<BasicOperateResult> monthTotalQianshouOrderCount(BasicOperateParam basicOperateParam);

	BasicOperateResult monthTotalQianshouOrderCountById(BasicOperateParam basicOperateParam2);

	BasicOperateResult monthTotalQianOrderCountTimeById(BasicOperateParam basicOperateParam2);

	List<BasicOperateResult> monthTotalQianOrderCount(BasicOperateParam basicOperateParam);

	BasicOperateResult monthTotalFayunCount(BasicOperateParam basicOperateParam2);

	List<BasicOperateResult> findTransportListBySpec(BasicOperateParam basicOperateParam, String month);

	Integer addReturnId(BasicOperateParam basicOperateParam);

}
